/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.csource.manage.service;

import com.icinfo.cloud.common.core.page.PageResponse;
import com.icinfo.cloud.provider.punish.csource.manage.dto.CaseSourceDetailDto;
import com.icinfo.cloud.provider.punish.csource.manage.dto.CaseSourceDetailVo;
import com.icinfo.cloud.provider.punish.csource.manage.dto.CaseSourceRegisterMainInfoDto;
import com.icinfo.cloud.provider.punish.csource.manage.dto.docdata.CaseSourceAppointInfo;
import com.icinfo.cloud.provider.punish.csource.manage.model.CaseSourcePartyInfo;
import com.icinfo.cloud.provider.punish.csource.manage.model.CaseSourceRegisterMainInfo;
import com.icinfo.cloud.provider.punish.csource.manage.request.CaseSourceRegisterMainInfoRequest;
import com.icinfo.cloud.provider.punish.csource.manage.vo.CaseSourceBasicInfoVo;
import com.icinfo.cloud.provider.punish.csource.manage.vo.CaseSourcePageNewVo;
import com.icinfo.cloud.provider.punish.csource.manage.vo.CaseSourceStatisticalVo;
import com.icinfo.cloud.provider.punish.dataprocessing.dto.CaseSearchDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.ColorSumVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;


/**
 * 描述: 案源登记主表 case_source_register_main_info 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年08月12日
 */
public interface ICaseSourceRegisterMainInfoService extends BaseService {

    /**
     * 案源列表
     * @param request
     * @return
     */
    PageResponse<CaseSourcePageNewVo> caseSourceList(CaseSourceRegisterMainInfoRequest request);

    /**
     * 案源统计
     * @param request
     * @return
     */
    CaseSourceStatisticalVo caseSourceStatistical(CaseSourceRegisterMainInfoRequest request);


    /**
     * 案源登记
     * @author liyafeng
     * @date 2022/8/12
      * @param saveDto
     * @return {@link int}
     */
    int saveCaseSourceRegisterMainInfo(CaseSourceRegisterMainInfoDto saveDto);
    /**
     * 获取案源详情
     * @author liyafeng
     * @date 2022/8/15
      * @param caseSourceDetailDto
     * @return {@link CaseSourceDetailVo}
     */
    CaseSourceDetailVo getCaseSourceDetail(CaseSourceDetailDto caseSourceDetailDto);

    /**
     * 描述：获取案源详情（通用文书使用接口）
     *
     * @param caseSourceId 案件源id
     * @return {@link CaseSourceBasicInfoVo }
     * @author shishengyao
     * @date 2022/08/19
     */
    CaseSourceBasicInfoVo getCaseSourceBasicInfoVo(String caseSourceId);

    /**
     * 描述：生成案源登记文书
     *
     * @param caseSourceId          案件源id
     * @param caseSourceOperateType 案件源操作类型
     * @param sourceAppointInfo     指派信息
     * @author shishengyao
     * @date 2022/08/25
     */
    void saveCaseSourceRegisterDoc(String caseSourceId , String caseSourceOperateType, CaseSourceAppointInfo sourceAppointInfo);

    /**
     * 描述： 根据id获取证据预览地址
     *
     * @author: zhengqiang
     * @date: 2022/9/5
     * @param: documentId
     * @return {@link Result< String>}
     **/
    Result<String> getEvidenceLinkByDocumentId(String documentId);

    /**
     * 描述: 案源时效颜色统计
     * @author zhanghongqiang
     * @Date 2022/10/26
     * @param request
     * @return com.icinfo.framework.common.web.Result
     */
    ColorSumVo getCaseSourceColourStatistic(CaseSourceRegisterMainInfoRequest request);
    /**
     * 描述：获取业务参数id
     *
     * @param lineCode 行代码
     * @param areaCode 区号
     * @return {@link String }
     * @author shishengyao
     * @date 2022/11/12
     */
    String getBusiParamId(String lineCode ,String areaCode);

    /**
     * 保存当事人信息
     * @param id
     * @param caseSourcePartyInfos
     */
    void saveCaseSourcePartyInfo(String id, List<CaseSourcePartyInfo> caseSourcePartyInfos);
    /**
     * 案源修改
     * @author liyafeng
     * @date 2022/12/29
      * @param saveDto
     * @return {@link int}
     */
    int editCaseSourceRegisterMainInfo(CaseSourceRegisterMainInfoDto saveDto);

    /**
     * 获取案源信息
     * @param searchDto 查询对象
     * @return  案源信息
     * @author lilihao
     * @date 2023/2/6 19:14
     */
    List<CaseSourceRegisterMainInfo> getCaseSourceRegisterInfo(CaseSearchDto searchDto);

    /**
     * 删除案源信息
     * @param id 案源唯一标识
     * @return
     * @author lilihao
     * @date 2023/2/8 1:07
     */
    int delCaseSourceRegisterInfo(String id);
}
